﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados;

namespace Negocios
{
    public class Video
    {
        private int codigo;

        public int Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }
        private string nome;

        public string Nome
        {
            get { return nome; }
            set
            {
                if (value.Length == 0)
                    throw new Exception("Nome deverá ser informado");
                if (value.Length > 40)
                    throw new Exception("Nome deverá ter no máximo 40 caracteres");
                else
                    nome = value;
            }
        }
        private string localizacao;

        public string Localizacao
        {
            get { return localizacao; }
            set
            {
                if (value.Length > 50)
                    throw new Exception("Localizacao deverá ter no máximo 40 caracteres");
                else localizacao = value;
            }
        }

        private Genero genero;

        public Genero Genero
        {
            get { return genero; }
            set
            {
                if (value.Codigo == 0) { throw new Exception("Genero deverá ser informado"); }
                else if ((new GeneroBLL()).Consultar(value.Codigo) == null)
                    throw new SystemException("Gênero desconhecido.");
                else genero = value;
            }
        }

        private Autor autor;

        public Autor Autor
        {
            get { return autor; }
            set
            {
                if (value.Codigo == 0) { throw new Exception("Autor deverá ser informado"); }
                else if ((new AutorBLL()).Consulta(value.Codigo) == null)
                    throw new SystemException("Autor desconhecido.");
                else autor = value;
            }
        }

        private Formato formato;

        public Formato Formato
        {
            get { return formato; }
            set
            {
                if (value.Codigo == 0) { throw new Exception("Formato deverá ser informado"); }
                else if ((new FormatoBLL()).Consulta(value.Codigo) == null)
                    throw new SystemException("Formato desconhecido.");
                else formato = value;
            }
        }

        private Especificacao especificacao;

        public Especificacao Especificacao
        {
            get { return especificacao; }
            set
            {
                if (value.Codigo == 0) { throw new Exception("Especificacao deverá ser informada"); }
                else if ((new EspecificacaoBLL()).Consultar(value.Codigo) == null)
                    throw new SystemException("Especificação desconhecido.");
                else especificacao = value;
            }
        }

        private SoftwareDeReproducao software;

        public SoftwareDeReproducao Software
        {
            get { return software; }
            set
            {
                if (value.Codigo == 0) { throw new Exception("Software deverá ser informado"); }
                else if ((new Software_De_ReproducaoBLL()).Consulta(value.Codigo) == null)
                    throw new SystemException("Software desconhecido.");
                else software = value;
            }
        }

        private Usuario usuario;

        public Usuario Usuario
        {
            get { return usuario; }
            set { usuario = value; }
        }

        public Video(int codigo)
        {
            Codigo = codigo;
        }

        public Video(string nome, string localizacao, Genero genero, Autor autor, Formato formato, Especificacao especificacao)
        {
            
            Nome = nome;
            Localizacao = localizacao;
            Genero = genero;
            Autor = autor;
            Formato = formato;
            Especificacao = especificacao;

        }
        public Video( string nome, string localizacao, Genero genero, Autor autor, Formato formato, Especificacao especificacao, SoftwareDeReproducao software, Usuario usuario)
        {
           
            Nome = nome;
            Localizacao = localizacao;
            Genero = genero;
            Autor = autor;
            Formato = formato;
            Especificacao = especificacao;
            Software = software;
            Usuario = usuario;
         

        }
        public Video(int codigo ,string nome, string localizacao, Genero genero, Autor autor, Formato formato, Especificacao especificacao,SoftwareDeReproducao software, Usuario usuario)
        {
            Codigo = codigo;
            Nome = nome;
            Localizacao = localizacao;
            Genero = genero;
            Autor = autor;
            Formato = formato;
            Especificacao = especificacao;
            Software = software;
            Usuario = usuario;

        }
    }
}
